home *** CD-ROM | disk | FTP | other *** search
- HOW TO INSTALL AND TEST SAMBA
- =============================
-
-
- STEP 0. Read the man pages. They contain lots of useful info that will
- help to get you started. If you don't know how to read man pages then
- try something like:
-
- nroff -man smbd.8 | more
-
- STEP 1. install a smb client.
-
- There are several, eg: Pathworks, Lanmanager for DOS, Windows for
- Workgroups, Windows95, Lanmanager for Windows, Lanmanager for OS/2,
- Windows NT come to mind. Lanmanager for dos is available via ftp from
- ftp.microsoft.com in bussys/MSclient/dos/. Please read the licensing
- stuff before downloading. Use the TCP/IP option in the client. Add
- your server to the \etc\lmhosts (or equivalent) file on the client.
-
- Note that your client must support TCP/IP. All the clients that I know
- of do, but with many TCP/IP is not installed by default. With some you
- have to get an optional add-on to support TCP/IP. The add-ons for
- windows for workgroups, dos and OS/2 are available via anonymous ftp
- from ftp.microsoft.com.
-
- The TCP/IP package for WfWg is available from ftp.microsoft.com as the file
- /peropsys/windows/public/tcpip/wfwt32.exe
-
-
- STEP 2. Install Samba on a unix box.
-
- To do this, first edit the Makefile. You will find that the Makefile
- has an entry for most unixes and you need to uncomment the one that
- matches your operating system.
-
- You should also edit the section at the top of the Makefile which
- determines where things will be installed. You need to get this right
- before compilation as Samba needs to find some things at runtime
- (smbrun in particular). There are also settings for where you want
- your log files etc. Make sure you get these right, and that the
- directories exist.
-
- Then type "make". This will create smbd, nmbd and smbclient.
-
- Once it's successfully compiled you can use "make install" to install
- the binaries and manual pages. You can separately install the binaries
- and/or man pages using "make installbin" and "make installman".
-
- Note that if you are upgrading for a previous version of Samba you
- might like to know that the old versions of the binaries will be
- renamed with a ".old" extension. You can go back to the previous
- version with "make revert" if you find this version a disaster!
-
-
- STEP 3. Create the smb configuration file.
-
- There is a sample configuration file called smb.conf.sampl supplied
- with the distribution. It has lots of comments on some of the
- available options. See the man page for all the options.
-
- The simplest useful configuration file would be something like this:
-
- [homes]
- guest ok = no
- read only = no
-
- which would allow connections by anyone with an account on the server,
- using either their login name or "homes" as the service name.
-
- Note that "make install" will not install a smb.conf file. You need to
- create it yourself. You will also need to create the path you specify
- in the Makefile for the logs etc, such as /usr/local/samba.
-
- Make sure you put the smb.conf file in the same place you specified in
- the Makefile.
-
- STEP 4. Test your config file with testparm
-
- It's important that you test the validity of your smb.conf file using
- the testparm program. If testparm runs OK then it will list the loaded
- services. If not it will give an error message.
-
- STEP 5. Starting the smbd and nmbd.
-
- You must choose to start smbd and nmbd either as daemons or from
- inetd. Don't try to do both! Either you can put them in inetd.conf
- and have them started on demand by inetd, or you can start them as
- daemons either from the command line or in /etc/rc.local. See the man
- pages for details on the command line options.
-
- The man advantage of starting smbd and nmbd as a daemon is that they
- will respond slightly more quickly to an initial connection
- request. This is, however, unlilkely to be a problem.
-
- Step 5a. Starting from inetd.conf
-
- Look at your /etc/services. What is defined at port 139/tcp. If
- nothing is defined then add a line like this:
-
- netbios-ssn 139/tcp
-
- similarly for 137/udp you should have an entry like:
-
- netbios-ns 137/udp
-
- Next edit your /etc/inetd.conf and add two lines something like this:
-
- netbios-ssn stream tcp nowait root /usr/local/samba/smbd smbd
- netbios-ns dgram udp wait root /usr/local/samba/nmbd nmbd
-
- The exact syntax of /etc/inetd.conf varies between unixes. Look at the
- other entries in inetd.conf for a guide.
-
- NOTE: Some unixes already have entries like netbios_ns (note the
- underscore) in /etc/services. You must either edit /etc/services or
- /etc/inetd.conf to make them consistant.
-
- NOTE: On many systems you may need to give the nmbd a -B parameter to
- specify the broadcast address of your interface. Run ifconfig as root
- if you don't know what the broadcast is for your net. nmbd tries to
- determine it at run time, but fails on some unixes. See the section on
- "testing nmbd" for a method of finding if you need to do this.
-
- !!!WARNING!!! Many unixes only accept around 5 parameters on the
- command line in inetd. This means you shouldn't use spaces between the
- options and arguments, or you should use a script, and start the
- script from inetd.
-
- Restart inetd, perhaps just send it a HUP. If you have installed an
- earlier version of nmbd then you may need to kill nmbd as well.
-
- Step 5b. Alternative: starting it as a daemon
-
- To start the server as a daemon you should create a script something
- like this one, perhaps calling it "startsmb"
-
- #!/bin/sh
- /usr/local/samba/smbd -D
- /usr/local/samba/nmbd -D
-
- then make it executable with "chmod +x startsmb"
-
- You can then run startsmb by hand or execute it from /etc/rc.local
-
- To kill it send a kill signal to the processes nmbd and smbd.
-
-
-
- STEP 7. Try listing the shares available on your server
-
- smbclient -L yourhostname
-
- Your should get back a list of shares available on your server. If you
- don't then something is incorrectly setup. Note that this method can
- also be used to see what shares are available on other LanManager
- clients (such as WfWg).
-
- If you chose user level security then you may find that Samba requests
- a password before it will list the shares. See the smbclient docs for
- details.
-
- STEP 8. try connecting with the unix client. eg:
-
- smbclient '\\yourhostname\aservice'
-
- Typically the "yourhostname" would be the name of the host where you
- installed smbd. The "aservice" is any service you have defined in the
- smb.conf file. Try your user name if you just have a [homes] section
- in smb.conf.
-
- For example if your unix host is bambi and your login name is fred you
- would type:
-
- smbclient '\\bambi\fred'
-
- NOTE: The number of slashes to use depends on the type of shell you
- use. You may need '\\\\bambi\\fred' with some shells.
-
- STEP 9. Try connecting from a dos/WfWg/Win95/NT/os-2 client. Try
- mounting disks. eg:
-
- net use d: \\servername\service
-
- Try printing. eg:
-
- net use lpt1: \\servername\spoolservice
- print filename
-
- Celebrate, or send me a bug report!
-
- TESTING NMBD
- ============
-
- As of version 1.7.00 it is possible to test nmbd to see if it is
- correctly installed. This can also test to see if it can auto-detect
- your broadcast address.
-
- Under some operating systems you can only test the broadcast part if
- running as root. You can test other functionality from a non-root
- account. To test from root use:
-
- nmbd -L TESTNAME
-
- where TESTNAME is the netbios name you wish to test. This would
- typically be the hostname of the unix host where you installed nmbd.
- It should return the IP address of the host you are looking for. If it
- doesn't then something is wrong with your nmbd configuration. (It is
- also possibe that you have a net configuration that doesn't send
- broadcasts to itself. Some Linux configurations do this.)
-
- If it fails then it could mean it is not correctly detecting your
- broadcast address or netmask. You will then need to supply the -B and
- -N parameters. See the nmbd man page for details.
-
- It has succeeded if somewhere in the output is a line like:
-
- ww.xx.yy.zz HOSTNAME
-
- which means it managed to look the IP correctly.
-
- To test from a non-root account use:
-
- nmbd -B HOSTNAME -L TESTNAME
-
- where hostname is the host name of the host where nmbd is installed
- and TESTNAME is the name you want to test. Typically this would be the
- same as HOSTNAME.
-
-
- NAME RESOLUTION
- ===============
-
- Probably the most common problem people have when installing Samba is
- getting name resolution to work. This is usually caused by incorrect
- settings for nmbd.
-
- One solution is to use nmbd as a WINS server, instead of using name
- resolution by broadcast. To do this you need to enter the IP address
- of the Samba server in the WINS section of your WfWg, Win95 or WinNT TCP/IP
- setup.
-
- As a last resort you can use a lmhosts file on the PC to resolve names,
- as long as you enable lmhosts name resolution in the right dialog
- box. This doesn't lend itself very well to update, however.
-
- The best solution is, however, to fix the nmbd setup. Experimentation
- and careful reading of the Samba docs should help.
-
-
- CHOOSING THE PROTOCOL LEVEL
- ===========================
-
- The SMB protocol has many dialects. Currently Samba supports 4, called
- CORE, COREPLUS, LANMAN1, LANMAN2 and NT1.
-
- You can choose what protocols to support in the smb.conf file. The
- default is NT1 and that is the best for the vast majority of sites.
-
- In older versions of Samba you may have found it necessary to use
- COREPLUS. The limitations that led to this have mostly been fixed. It
- is now less likely that you will want to use less than LANMAN1. The
- only remaining advantage of COREPLUS is that for some obscure reason
- WfWg preserves the case of passwords in this protocol, whereas under
- LANMAN1, LANMAN2 or NT1 it uppercases all passwords before sending them,
- forcing you to use the "password level=" option in some cases.
-
- The main advantage of LANMAN2 and NT1 is support for long filenames with some
- clients (eg: smbclient, Windows NT or Win95).
-
- See the smb.conf manual page for more details.
-
- Note: To support print queue reporting you may find that you have to
- use TCP/IP as the default protocol under WfWg. For some reason if you
- leave Netbeui as the default it may break the print queue reporting on
- some systems. It is presumably a WfWg bug.
-
-
- PRINTING FROM UNIX
- ==================
-
- To use a printer that is available via a smb-based server from a unix
- host you will need to compile the smbclient program. You then need to
- install the script "smbprint". Read the instruction in smbprint for
- more details.
-
- There is also a SYSV style script that does much the same thing called
- smbprint.sysv. It contains instructions.
-
-
- LOCKING
- =======
-
- One area which sometimes causes trouble is locking.
-
- There are two types of locking which need to be performed by a SMB
- server. The first is "record locking" which allows a client to lock a
- range of bytes in a open file. The second is the "deny modes" that are
- specified when a file is open.
-
- Samba supports "record locking" using the fcntl() unix system
- call. This is often implemented using rpc calls to a rpc.lockd process
- running on the system that owns the filesystem. Unfortunately many
- rpc.lockd implementations are very buggy, particularly when made to
- talk to versions from other vendors. It is not uncommon for the
- rpc.lockd to crash.
-
- There is also a problem translating the 32 bit lock requests generated
- by PC clients to 31 bit requests supported by most
- unixes. Unfortunately many PC applications (typically OLE2
- applications) use byte ranges with the top bit set as semaphore
- sets. Samba attempts translation to support these types of
- applications, and the translation has proved to be quite successful.
-
- Strictly a SMB server should check for locks before every read and
- write call on a file. Unfortunately with the way fcntl() works this
- can be slow and may overstress the rpc.lockd. It is also almost always
- unnecessary as clients are supposed to independently make locking
- calls before reads and writes anyway if locking is important to
- them. By default Samba only makes locking calls when explicitly asked
- to by a client, but if you set "strict locking = yes" then it will
- make lock checking calls on every read and write.
-
- You can also disable by range locking completely using "locking =
- no". This is useful for those shares that don't support locking or
- don't need it (such as cdroms). In this case Samba fakes the return
- codes of locking calls to tell clients that everything is OK.
-
- The second class of locking is the "deny modes". These are set by an
- application when it opens a file to determine what types of access
- should be allowed simultaneously with it's open. A client may ask for
- DENY_NONE, DENY_READ, DENY_WRITE or DENY_ALL. There are also special
- compatability modes called DENY_FCB and DENY_DOS.
-
- By default Samba does not implement these share modes. If you use
- "share modes = yes" then Samba will implement them using locking files
- in the "lock directory". See the man pages for details.
-